布尔赋值运算符
使用布尔赋值运算符可以把布尔比较与赋值组合起来,其方式与第3章中的数学赋值运算符(+=
,*=
等)相同。布尔赋值运算符 如表 4-4 所示
。
表4-4 布尔赋值运算符
运算符 | 类别 | 示例表达式 | 结果 |
---|---|---|---|
&= | Binary | var1 &= var2; | var1 的值是 var1 & var2 的结果 |
|= | Binary | var1 |= var2; | var1 的值是 var1 | var2 的结果 |
^= | Binary | var1 ^= var2; | var1 的值是 var1 ^ var2 的结果 |
这些运算符处理布尔值和数值的方式与 &
、|
和 ^
相同。
&=
和|=
赋值运算符并不使用&&
和||
条件布尔运算符,即无论赋值运算符左边的值是什么,都处理所有操作数。
在下面的示例中,用户键入一个整数,然后代码使用该整数执行各种布尔运算。
将以下代码添加到 Program.cs
中:
static void Main(string[] args)
{
Console.WriteLine("Enter an integer:");
int myInt = Convert.ToInt32(Console.ReadLine());
bool isLessThan10 = myInt < 10;
bool isBetween0And5 = (0 <= myInt) && (myInt <= 5);
Console.WriteLine("Integer less than 10? {0}", isLessThan10);
Console.WriteLine("Integer between 0 and 5? {0}", isBetween0And5);
Console.WriteLine("Exactly one of the above is true? {0}", isLessThan10 ^ isBetween0And5);
Console.ReadKey();
}
示例的说明
前两行代码使用前面介绍的技术,提示并接受一个整数值:
Console.WriteLine("Enter an integer:");
int myInt = Convert.ToInt32(Console.ReadLine());
使用 Convert.ToInt32()
从字符串输入中得到一个整数。Convert.ToInt32()
是另一个类型转换命令,与前面使用的 Convert.ToDouble()
命令属于同一系列。
接着声明两个布尔变量 isLessThan10
和 isBetween0And5
,并赋值,其中的逻辑匹配其名称中的描述:
bool isLessThan10 = myInt < 10;
bool isBetween0And5 = (0 <= myInt) && (myInt <= 5);
接着在下面的3行代码中使用这些变量,前两行代码输出它们的值,第3行对它们执行一个操作,并输出结果。在执行这段代码时,假定用户输入了7。
第一个输出是操作 myInt < 10
的结果。如果 myInt
是 7,则它小于 10,因此结果为 true
。如果 MyInt
的值是 10 或更大,就会得到 false
。
第二个输出涉及较多计算:(0 <= myInt) && (myInt <= 5)
,其中包含两个比较操作,用于确定 myInt
是否大于或等于0,且小于或等于 5。接着对结果进行布尔 AND
操作。输入数字 7,则 (0 <= myInt)
返回 true
,而 (myInt <= 5)
返回 false
,最终结果就是 (true) && (false)
,即 false
。
最后,对两个布尔变量 isLessThan10
和 isBetween0And5
执行逻辑异或操作。如果一个变量的值是 true
,另一个是 false
,则代码返回 true
,所以只有 myInt
是 6、7、8或 9,才返回 true
,本例输入的是 7,所以结果是 true
。
🔚